Programming language design concepts
نویسندگان
چکیده
ion is a mode of thought by which we concentrate on general ideas rather than on specific manifestations of these ideas. Abstraction is the whole basis of philosophy and mathematics, and is also fruitful in many other disciplines, including computer science. In systems analysis, abstraction is the discipline by which we concentrate on essential aspects of the problem at hand, and ignore all inessential aspects. For example, in designing an air traffic control system we concentrate on details that are relevant to the working of the system (such as the aircraft’s type and call sign), and ignore the numerous irrelevant details (such as the aircraft’s color and external markings, the crew’s names, and the passengers’ names). In programming, abstraction alludes to the distinction we make between what a program unit does and how that program unit works. This enables a separation of concerns between the programmers who use the program unit and the programmer who implements it. Furthermore, we can use low-level program units to implement higher-level program units, and in turn use these to implement still higher-level program units. In fact, we can introduce as many levels of abstraction as desired. Separation of concerns and multiple levels of abstraction are essential tools in building large software systems. Procedural abstraction is concerned with the simplest program units, namely procedures. In this chapter we shall study: • proper procedures and function procedures; • parameters and arguments; • how procedure calls and parameters are implemented. In Chapter 6 we shall study methods, which are the counterparts of procedures in objectoriented languages. 5.1 Function procedures and proper procedures A procedure is an entity that embodies a computation. In particular, a function procedure embodies an expression to be evaluated, and a proper procedure embodies a command to be executed. The embodied computation is to be performed whenever the procedure is called. A procedure is often defined by one programmer (the implementer) and called by other programmers (the application programmers). These programmers have different viewpoints. The application programmers are concerned only with the procedure’s observable behavior, in other words the outcome of calling the procedure. The implementer is concernedwith how that outcome is to be achieved, in other words the choice of algorithm.
منابع مشابه
Issues in the Design of Modern Distributed Computing Environments
Developing distributed applications is still a complicated and error prone task. Application programmers are faced with a distributed computing environment comprising heterogeneous concepts reaching from high-level programming language concepts to services and concepts ooered by the underlying operating system. We think that an appropriate computing environment should ooer a single system view ...
متن کاملA Comparative Case Study of Code Reuse With Language Oriented Programming
There is a gap between our ability to reuse high-level concepts in software design and our ability to reuse the code implementing them. Language Oriented Programming (LOP) is a software development paradigm that aims to close this gap, through extensive use of Domain Specific Languages (DSLs). With LOP, the high-level reusable concepts become reusable DSL constructs, and their translation into ...
متن کاملThe C++0x "Concepts" Effort
C++0x is the working title for the revision of the ISO standard of the C++ programming language that was originally planned for release in 2009 but that was delayed to 2011. The largest language extension in C++0x was “concepts”, that is, a collection of features for constraining template parameters. In September of 2008, the C++ standards committee voted the concepts extension into C++0x, but ...
متن کاملA Formalization of Concepts for Generic Programming
Generic programming is a paradigm for systematic design and classification of software components for optimal reuse. It has been the guiding methodology behind the design of the C++ Standard Template Library and numerous other C++ libraries. Generic programming starts with algorithms, seeking to identify the minimal requirements on types necessary for correct and efficient execution of an algor...
متن کاملOrthogonality in Language Design – Why and how to fake it
A major challenge in the design of programming languages is the definition of how elementary concepts interact such as to approximate the impression of orthogonality. We propose to use techniques of concern modeling for capturing such interactions with the goal of providing a language definition which aligns intuition and actual semantics. We report on the design of Object Teams, a programming ...
متن کاملA pi-Calculus Semantics for an Object-Based Design Notation
Companion papers give examples of the development of concurrent programs using a design notation which employs a number of concepts from object-oriented programming languages. This paper documents the semantics of the design language by providing a mapping to the pi-calculus.
متن کامل